<?php

namespace app\controller;

use core\Controller;
use core\Captcha;

class Auth extends Controller
{
    // 生成验证码图像
    public function captcha()
    {
        $captcha = new Captcha();
        return $captcha->generateImage();
    }

    public function is_logged() {
        return $this->session('user_id');
    }

    public function logout() {
        $_SESSION = [];
        session_destroy();
    }


    /**
     * [C - Create] 插入一条新的产品记录
     * 使用 $this->db->insert()
     */
    public function createProduct(string $name, float $price, int $stock)
    {
        // 1. 准备要插入的数据 (关联数组)
        $data = [
            'name'       => $name,
            'price'      => $price,
            'stock'      => $stock,
            'created_at' => date('Y-m-d H:i:s')
        ];

        // 2. 执行插入，返回新记录的 ID
        // Database 类会自动构建 SQL 语句并安全地绑定参数
        $newId = $this->db->insert('products', $data);

        if ($newId > 0) {
            return "产品 '{$name}' 创建成功，ID 为: " . $newId;
        } else {
            return "产品创建失败。";
        }
    }

    /**
     * [U - Update] 更新现有产品记录
     * 使用 $this->db->update()
     * * @param int $id 要更新的产品ID
     * @param float $newPrice 新价格
     */
    public function updatePrice(int $id, float $newPrice)
    {
        // 1. 准备要更新的字段和值
        $dataToUpdate = [
            'price'      => $newPrice,
            'updated_at' => date('Y-m-d H:i:s')
        ];

        // 2. 定义 WHERE 子句和参数
        // 注意：WHERE 子句本身不包含 'WHERE' 关键字
        $whereClause = "id = ?";
        $whereParams = [$id];

        // 3. 执行更新，返回受影响的行数
        $affectedRows = $this->db->update('products', $dataToUpdate, $whereClause, $whereParams);

        if ($affectedRows > 0) {
            return "产品 ID {$id} 的价格已更新为 {$newPrice}。";
        } else {
            return "产品 ID {$id} 未找到或价格未发生变化。";
        }
    }

    /**
     * [D - Delete] 删除一条产品记录
     * 使用 $this->db->delete()
     * * @param int $id 要删除的产品ID
     */
    public function deleteProduct(int $id)
    {
        // 1. 定义 WHERE 子句和参数
        $whereClause = "id = ?";
        $whereParams = [$id];

        // 2. 执行删除，返回受影响的行数
        $affectedRows = $this->db->delete('products', $whereClause, $whereParams);

        if ($affectedRows > 0) {
            return "产品 ID {$id} 已成功删除。";
        } else {
            return "产品 ID {$id} 未找到，删除失败。";
        }
    }
}
